package br.edu.unilasalle.simon_api.domain;

// Generated 08/03/2014 18:19:52 by Hibernate Tools 4.0.0

import static javax.persistence.GenerationType.IDENTITY;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;

/**
 * EnderecoEntidade generated by hbm2java
 */
@Entity
@Table(name = "endereco_entidade", catalog = "simon")
@JsonIgnoreProperties(value = { "handler", "hibernateLazyInitializer", "fornecedores", "clientes", "funcionarios" })
public class EnderecoEntidade extends BaseEntity<Long> {

	private static final long serialVersionUID = 5577397525486134457L;
	
	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id", unique = true, nullable = false)
	private Long id;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_cidade", nullable = false)
	private Cidade cidade;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_estado", nullable = false)
	private Estado estado;
	
	@Column(name = "tipo_endereco", nullable = false)
	private Integer tipoEndereco;
	
	@Column(name = "cep", nullable = false, length = 10)
	private String cep;
	
	@Column(name = "bairro", nullable = false, length = 100)
	private String bairro;
	
	@Column(name = "endereco", nullable = false, length = 200)
	private String endereco;
	
	@Column(name = "numero", length = 6)
	private Integer numero;
	
	@Column(name = "complemento", length = 100)
	private String complemento;
	
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "enderecoEntidade")
	private Set<Fornecedor> fornecedores = new HashSet<Fornecedor>(0);
	
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "enderecoEntidade")
	private Set<Cliente> clientes = new HashSet<Cliente>(0);
	
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "enderecoEntidade")
	private Set<Funcionario> funcionarios = new HashSet<Funcionario>(0);

	public EnderecoEntidade() {
	}
	
	public EnderecoEntidade(Long id) {
		this.id = id;
	}
	
	public EnderecoEntidade(Estado estado, Cidade cidade) {
		this.estado = estado;
		this.cidade = cidade;
	}
	
	public EnderecoEntidade(Estado estado, Cidade cidade, String bairro, String endereco) {
		this.estado = estado;
		this.cidade = cidade;
		this.bairro = bairro;
		this.endereco = endereco;
	}

	public EnderecoEntidade(Cidade cidade, Estado estado, Integer tipoEndereco,
			String cep, String bairro, String endereco) {
		this.cidade = cidade;
		this.estado = estado;
		this.tipoEndereco = tipoEndereco;
		this.cep = cep;
		this.bairro = bairro;
		this.endereco = endereco;
	}

	public EnderecoEntidade(Cidade cidade, Estado estado, Integer tipoEndereco,
			String cep, String bairro, String endereco, String complemento,
			Set<Fornecedor> fornecedores, Set<Cliente> clientes,
			Set<Funcionario> funcionarios) {
		this.cidade = cidade;
		this.estado = estado;
		this.tipoEndereco = tipoEndereco;
		this.cep = cep;
		this.bairro = bairro;
		this.endereco = endereco;
		this.complemento = complemento;
		this.fornecedores = fornecedores;
		this.clientes = clientes;
		this.funcionarios = funcionarios;
	}

	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Cidade getCidade() {
		return this.cidade;
	}

	public void setCidade(Cidade cidade) {
		this.cidade = cidade;
	}

	public Estado getEstado() {
		return this.estado;
	}

	public void setEstado(Estado estado) {
		this.estado = estado;
	}

	public Integer getTipoEndereco() {
		return this.tipoEndereco;
	}

	public void setTipoEndereco(Integer tipoEndereco) {
		this.tipoEndereco = tipoEndereco;
	}

	public String getCep() {
		return this.cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	public String getBairro() {
		return this.bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public String getEndereco() {
		return this.endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
	
	public Integer getNumero() {
		return numero;
	}

	public void setNumero(Integer numero) {
		this.numero = numero;
	}

	public String getComplemento() {
		return this.complemento;
	}

	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}

	public Set<Fornecedor> getFornecedores() {
		return this.fornecedores;
	}

	public void setFornecedores(Set<Fornecedor> fornecedores) {
		this.fornecedores = fornecedores;
	}

	public Set<Cliente> getClientes() {
		return this.clientes;
	}

	public void setClientes(Set<Cliente> clientes) {
		this.clientes = clientes;
	}

	public Set<Funcionario> getFuncionarios() {
		return this.funcionarios;
	}

	public void setFuncionarios(Set<Funcionario> funcionarios) {
		this.funcionarios = funcionarios;
	}

}
